/***********************************************************************
 * Module:  Stationnement.java
 * Author:  Simon
 * Purpose: Defines the Class Stationnement
 ***********************************************************************/

package Modele;

import java.util.*;

import DAO.DAOStation;
import DAO.DAOVelo;

/** Objet définissant les stationnements */
public class Stationnement {
	/** Identifiant du stationnement */
	private int idStationnement;
	/** Identifiant du vélo du stationnement */
	private int idVelo;
	/** Identifiant de la station du stationnement */
	private int idStation;
	/** Date de début du stationnement */
	private Date dateDeDebut;
	/** Date de fin du stationnement */
	private Date dateDeFin;

	/**
	 * Instancie un stationnement
	 * 
	 * @param idVelo
	 *            Identifiant du vélo
	 * @param idStation
	 *            Identifiant de la station
	 * @param dateDeDebut
	 *            Date de début du stationnement
	 * @param dateDeFin
	 *            Date de fin du stationnement
	 */
	public Stationnement(int idVelo, int idStation, Date dateDeDebut,
			Date dateDeFin) {
		this.idVelo = idVelo;
		this.idStation = idStation;
		this.dateDeDebut = dateDeDebut;
		this.dateDeFin = dateDeFin;
	}

	/**
	 * Instancie un stationnement
	 * 
	 * @param idStationnement
	 *            Identifiant du stationnement
	 * @param idVelo
	 *            Identifiant du vélo
	 * @param idStation
	 *            Identifiant de la station
	 * @param dateDeDebut
	 *            Date de début du stationnement
	 * @param dateDeFin
	 *            Date de fin du stationnement
	 */
	public Stationnement(int idStationnement, int idVelo, int idStation,
			Date dateDeDebut, Date dateDeFin) {
		this.idStationnement = idStationnement;
		this.idVelo = idVelo;
		this.idStation = idStation;
		this.dateDeDebut = dateDeDebut;
		this.dateDeFin = dateDeFin;
	}

	/**
	 * Renvoie l'identifiant du stationnement
	 * 
	 * @return L'identifiant du stationnement
	 */
	public int getIdStationnement() {
		return idStationnement;
	}

	/**
	 * Renvoie le vélo concerné par le sationnement
	 * 
	 * @return Le vélo
	 */
	public Velo getVelo() {
		return DAOVelo.getVeloById(getIdVelo());
	}

	/**
	 * Renvoie la station concernée par le stationnement
	 * 
	 * @return La station
	 */
	public Station getStation() {
		return DAOStation.getStationById(getIdStation());
	}

	/**
	 * Renvoie la date de fin du stationnement
	 * 
	 * @return La date de fin du stationnement
	 */
	public Date getDateDeFin() {
		return dateDeFin;
	}

	/**
	 * Assigne la date de fin du stationnement
	 * 
	 * @param newDateDeFin
	 */
	public void setDateDeFin(Date newDateDeFin) {
		dateDeFin = newDateDeFin;
	}

	/**
	 * Renvoie la date de debut du stationnement
	 * 
	 * @return La date de debut du stationnement
	 */
	public Date getDateDeDebut() {
		return dateDeDebut;
	}

	/**
	 * Assigne la date de debut du stationnement
	 * 
	 * @param newDateDeDebut
	 */
	public void setDateDeDebut(Date newDateDeDebut) {
		dateDeDebut = newDateDeDebut;
	}

	/**
	 * Renvoie l'identifiant du vélo du stationnement
	 * 
	 * @return L'identifiant du vélo du stationnement
	 */
	public int getIdVelo() {
		return idVelo;
	}

	/**
	 * Assigne l'identifiant du vélo du stationnement
	 * 
	 * @param newIdVelo
	 */
	public void setIdVelo(int newIdVelo) {
		idVelo = newIdVelo;
	}

	/**
	 * Renvoie l'identifiant de la station du stationnement
	 * 
	 * @return L'identifiant de la station du stationnement
	 */
	public int getIdStation() {
		return idStation;
	}

	/**
	 * Assigne l'identifiant de la station du stationnement
	 * 
	 * @param newIdStation
	 */
	public void setIdStation(int newIdStation) {
		idStation = newIdStation;
	}

}